package cn.tedu.design;/**
 * @Author 金帮嘉诚 @Date 2021-06-24 星期四 9:45
 */
/*本类用于测试单例设计模式实现方案一：饿汉式*/

/**
 * 知识点
 * 调用前已经被创建
 */
public class Singleton1 {
    public static void main(String[] args) {
        //'MySingle()' has private access in 'cn.tedu.design.MySingle'
//        MySingle single1=new MySingle();
        //静态方法 类名调用
        MySingle single1 = MySingle.getSingle();
        MySingle single2 = MySingle.getSingle();

        //相同
        System.out.println(single1 == single2);
        System.out.println("single1 = " + single1);
        System.out.println("single2 = " + single2);


    }
}

/*思考：在构造方法与对象均私有化以后，我们需要调用公共的全局访问点来获取本类对象
 * 但是，我们如何调用这个公共的方法呢？
 * 之前调用方法都是创建本类对象进行调用，但现在单例无法在外部创建本类对象
 * 解决方案：我们可以将公共方法设置为静态方法，这样就可以被类名直接调用
 * 需要注意：本方法中返回的对象也需要设置静态，因为静态只能调用静态*/
class MySingle {
    //Private Constructor
    /*构造方法私有化的目的：为了防止外界随意调用(或称实例化/new)本类对象*/
    private MySingle() {
    }

    private static MySingle single = new MySingle();

    public static MySingle getSingle() {
        return single;
    }
    //
//    public MySingle getSingle(){
//
//    }

}